#ifndef __ULCORE_BALLS_H__
#define __ULCORE_BALLS_H__

#include <iostream>
#include <vector>
#include <algorithm>

#define UL_BALL_MIN_RED		1
#define UL_BALL_MAX_RED		33
#define UL_BALL_MIN_BLUE	1
#define UL_BALL_MAX_BLUE	16
#define UL_RED_BALLS_COUNT	6

using namespace std;

class ULC_Balls{
public:
	vector<int> reds;
	int blue;		
	bool outputBlue;
public:
	ULC_Balls();
	ULC_Balls(int red1, int red2, int red3, int red4, int red5, int red6, int blue);
	ULC_Balls(int *redBalls, int blue);
	void EnableOutputBlue();
	void DisableOutputBlue();
	void SetNumbers(int red1, int red2, int red3, int red4, int red5, int red6, int blue);
	void SetNumbers(int *redBalls, int blue);
	bool IsRedBallExisted(int number);
	void SortRedBalls();//Sort red ones
	int RedBallsSum() const;
	int TotalSum() const; //Reds + blue
	friend ULC_Balls operator+(const ULC_Balls &left, const ULC_Balls &right); 
	bool operator==(const ULC_Balls &balls);
	friend ostream& operator<<(ostream &os, const ULC_Balls &balls);
};

#endif /*__ULCORE_BALLS_H__*/
